//
//  SHLoadingView.h
//  Dejal Open Source
//
//  Created by David Sinclair on 2009-07-26.
//  Copyright (c) 2009-2012 Dejal Systems, LLC. All rights reserved.
//
//  Redistribution and use in source and binary forms, with or without modification,
//  are permitted provided that the following conditions are met:
//
//  - Redistributions of source code must retain the above copyright notice,
//    this list of conditions and the following disclaimer.
//
//  - Redistributions in binary form must reproduce the above copyright notice,
//    this list of conditions and the following disclaimer in the documentation
//    and/or other materials provided with the distribution.
//
//  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
//  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
//  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
//  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
//  FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
//  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
//  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
//  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
//  OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
//  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//

#import <UIKit/UIKit.h>

//#define DejalActivityView SHLoadingView

@interface SHLoadingView : UIView

// The view to contain the activity indicator and label.  The bezel style has a semi-transparent rounded rectangle, others are fully transparent:
@property (nonatomic, strong, readonly) UIView *borderView;

@property (nonatomic, strong) UIImageView *activityWhaleSwimmingView;

// The activity label:
@property (nonatomic, strong) UILabel *activityLabel;

//  Returns the currently displayed activity view, or nil if there isn't one:
+ (SHLoadingView *)currentActivityView;

+ (SHLoadingView *)loadingViewForView:(UIView *)addToView;
+ (SHLoadingView *)loadingViewForView:(UIView *)addToView withLabel:(NSString *)labelText;
+ (void)removeView;
+ (float)removeAnimateTime;

/**
 显示加载动画
 
 @param text 提示文字
 */
+ (void)show:(NSString *)text inView:(UIView*)view;


/**
 显示加载动画，强制显示传的text
 
 @param text 显示内容
 */
+ (void)showForceWithText:(NSString *)text inView:(UIView*)view;

/**
 关闭加载动画
 */
+ (void)close;


/**
 关闭加载动画
 
 @param success 成功\失败
 @param text 提示文字
 */
+ (void)closeWithText:(BOOL)success textForView:(NSString *)text;
+ (void)closeWithText:(BOOL)success textForView:(NSString *)text completion:(void (^)(void))completion;

@end


// ----------------------------------------------------------------------------------------
// MARK: -
// ----------------------------------------------------------------------------------------


// These methods are exposed for subclasses to override to customize the appearance and behavior; see the implementation for details:

@interface SHLoadingView ()

- (UIView *)viewForView:(UIView *)view;
- (CGRect)enclosingFrame;
- (void)setupBackground;
- (UIView *)makeBorderView;
- (UIImageView *)makeWhaleSwimming;
- (UILabel *)makeActivityLabelWithText:(NSString *)labelText;
- (void)animateShow;

@end
// ----------------------------------------------------------------------------------------
// MARK: -
// ----------------------------------------------------------------------------------------


@interface AWDejalBezelActivityView : SHLoadingView

// Animates the view out from the superview and releases it, or simply removes and releases it immediately if not animating:
+ (void)removeViewAnimated:(BOOL)animated;

@end

// ----------------------------------------------------------------------------------------
// MARK: -
// ----------------------------------------------------------------------------------------


@interface UIApplication (KeyboardView)

- (UIView *)keyboardView;

@end;

